The small computer system interface (SCSI) storage protocol is being layered on a number of network-based transport protocols. The network-based transport protocols include Fibre Channel, Internet SCSI (iSCSI), and Infiniband. A monolithic driver, with the SCSI layer and the transport layer in the same driver, is currently used on storage devices providing a single transport protocol. A layered driver, with separate SCSI and transport layers, is currently used for storage devices providing multiple transport protocols. A layered driver can also be used for storage devices providing a single transport protocol.
In direct connect storage devices, all command processing resources of the SCSI layer are used for the single system connecting to the storage device. In storage devices connected to storage area networks, the storage device can be shared by multiple systems. Regardless of driver type, the command processing resources of the SCSI layer are being shared across multiple transport layer connections. Current mechanisms allocate fixed resources to each transport layer session. The static allocation mechanism can be extended to support multiple transport layers.
The use of a static allocation mechanism for command processing resources restricts the flexibility of a solution. Each session (i.e., where the session is a transport level construct) has an arbitrary maximum performance based on the statically allocated number of command processing resources. Each transport layer also has an aggregate maximum performance based on the statically allocated number of command processing resources and the number of sessions supported by the allocation. For example, consider a protocol layer that can support 16 independent communications services (i.e., 16 independent I_T Nexi for SCSI). In a static allocation, each transport protocol is given a maximum 8 of the transport level session constructs (i.e., for iSCSI a maximum of 8 sessions and for Fibre Channel a maximum of 8 connections). Thus, an arbitrary division exists between transports. Within the transport the allocation of resources between sessions may also be static. The present invention addresses the dynamic allocation of resources both across transports and within each transport.